package com.example.administrator.demob;

import android.Manifest;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.NetworkImageView;
import com.android.volley.toolbox.Volley;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {
    private static final int SHOW_IMG = 1001;
    private Button btnHttp;
    private Button btn_imageLoader;
    private Button btn_imageRequest;
    private Button btnNet;
    private ImageView ivImg;
    private NetworkImageView netImg;
    private String imgUrl = "http://seopic.699pic.com/photo/40011/0709.jpg_wh1200.jpg";
    private Handler handler;
    //请求队列
    private RequestQueue requestQueue;
    private MyImageCache myImageCache;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        requestQueue = Volley.newRequestQueue(MainActivity.this);
        myImageCache = new MyImageCache();

        btnHttp = findViewById(R.id.btn_http);
        btnNet = findViewById(R.id.btn_net);
        ivImg = findViewById(R.id.iv_img);
        netImg = findViewById(R.id.net_img);
        btn_imageRequest = findViewById(R.id.btn_imageRequest);
        btn_imageLoader = findViewById(R.id.btn_imageLoader);

        //ImageLoader+NetWorkImage
        btnNet.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ImageLoader imageLoader = new ImageLoader(requestQueue, myImageCache);
                netImg.setDefaultImageResId(R.drawable.moren);
                netImg.setErrorImageResId(R.drawable.error);
                netImg.setImageUrl(imgUrl, imageLoader);
            }
        });

        //Volley中的ImageLoader+ImageView
        btn_imageLoader.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ImageLoader imageLoader = new ImageLoader(requestQueue, myImageCache);
                ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(ivImg,
                        R.drawable.moren, R.drawable.error);
                imageLoader.get(imgUrl, imageListener);
            }
        });

        //Volley中的ImageRequest
        btn_imageRequest.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ImageRequest imageRequest = new ImageRequest(imgUrl,
                        new Response.Listener<Bitmap>() {
                            @Override
                            public void onResponse(Bitmap bitmap) {
                                ivImg.setImageBitmap(bitmap);
                            }
                        }, 0, 0, Bitmap.Config.ARGB_8888,
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError volleyError) {

                            }
                        });

                requestQueue.add(imageRequest);
            }
        });

        handler = new Handler(new Handler.Callback() {
            @Override
            public boolean handleMessage(Message msg) {
                if (msg.what == SHOW_IMG){
                    Bitmap bitmap = (Bitmap) msg.obj;
                    ivImg.setImageBitmap(bitmap);
                    return true;
                }
                return false;
            }
        });

        btnHttp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        useHttpUrlConnectionGet();
                    }
                }).start();
            }
        });
    }

    private void useHttpUrlConnectionGet() {
        try {
            URL url = new URL(imgUrl);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);

            Message message = Message.obtain();
            message.what = SHOW_IMG;
            message.obj = bitmap;
            handler.sendMessage(message);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
